TCP网络基础 Supporting tagline
TCP与UDP差异
TCP | UDP | |
---|---|---|
连接 | 面向连接,通过三次握手建立连接,四次挥手断开连接 | 无连接 |
可靠性 | 差错校验和失败重传,提供可靠传输服务 | 尽最大努力交付,不保证可靠性 |
消息顺序 | 保证消息收到的顺序与发出顺序一致 | UDP报文可能以任何顺序到达 |
数据边界 | TCP的数据流以字节流形式传输,没有边界 | 而UCP数据以报文的形式传输,每个报文都是一个独立数据包 |
速度 | TCP需要创建理解,可靠性保证,传输速度较慢 | UDP速度相对较快 |
流控制 | 提供流量控制 | 无流量控制 |
应用 | 适合对可靠性要求较高、传输时间要求不高的应用 | 适合对传输速度、效率要求高,例如实时应用 |
TCP连接的建立与断开
TCP报头如下图所示,其中在建立和断开连接时涉及到的标志有以下几个。
标志名称 | 大小 | 含义 |
---|---|---|
序列号seq | 四字节 | 为数据流的每一个字节分配的序列号,用于标记数据段的顺序,第一个序列号随机生成。 |
确认号ack | 四字节 | 期待收到的下一数据段的第一字节的序列号,表示上一数据段已收到,期待收到一下数据段。 |
确认ACK | 一位标志位 | 表示确认号是否有效。 |
同步SYN | 一位标志位 | 用于在建立连接时同步序号。当SYN=1,ACK=0时表示这是一个连接请求报文段。若同意连接,则在响应报文段中使得SYN=1,ACK=1。因此,SYN=1表示这是一个连接请求,或连接接受报文。SYN这个标志位只有在TCP建产连接时才会被置1,握手完成后SYN标志位被置0。 |
终止FIN | 一位标志位 | 用来释放一个连接。FIN=1表示:此报文段的发送方的数据已经发送完毕,并要求释放运输连接。 |
三次握手建立连接
四次挥手断开连接
blog comments powered by Disqus